The Domain Name System (“DNS”) is a hierarchical naming system for devices connected to the Internet. Its primary purpose is to translate human-friendly domain names (e.g., example.com) to the Internet Protocol (“IP”) addresses used by devices connected to the Internet (e.g., 192.0.2.1). When a requestor makes a DNS request for IP address (“A” record) of a domain name (also known as a DNS query), such as when a user types in a domain name into their browser to find a specific Internet site, the DNS request is sent to a recursive DNS server, which in turn makes requests to a hierarchical system of servers until the authoritative DNS server for the domain name is located. The user's request is then sent to the authoritative DNS server, which responds with the IP address corresponding to the domain name. If an entry for the requested domain name is found (e.g., a DNS resource record), a DNS reply is issued to the requestor, and that reply contains the IP address of a server, or other resource, corresponding to the requested domain name. Using the IP address from the reply, the requestor's computer/browser can connect to the server hosting the web site associated with the requested domain name.
DNS traffic management relates to the selection, from among more than one choice for a given domain name, of a set of resource records to provide to the requestor in response to a DNS query. For example, consider a domain name (e.g., example.com) that has more than one server associated with it (e.g., an East coast web server that has IP addresses 192.0.2.1 and 192.0.2.2 and a West coast web server that has IP address 203.0.113.1), all of which host the website for that domain name. In this example, when an authoritative DNS server which supports traffic management receives a DNS query for the IP addresses associated with the domain name “example.com,” it chooses and then returns one of the two answers (i.e., it returns either 192.0.2.1 and 192.0.2.2 or it returns 203.0.113.1 in this example). This choice is made according to the traffic management rules, criteria, or requirements specified for that domain name. The DNS can be used to store information other than IP addresses. For instance, it is possible to associate a domain name with a text value using TXT records. Each request includes both the type of information that should be returned (“A” for IPv4 addresses or “TXT” for generic text) and the domain name. The response will include an answer consisting of all resource records of the specified type associated with the given domain name. The traffic management described applies to all resource records types.
Because of the huge and quickly growing number of DNS queries that occur every minute of every day, and because of user expectations of minimal delay, the DNS system must provide IP addresses and other required information in response to DNS requests very quickly. Current DNS traffic management techniques and algorithms, however, slow response time because choosing which one of the multiple answers to return requires dynamically running or executing code or scripts for each domain name query. For complex traffic management decisions that are based on several factors (e.g., load balancing factors, cost factors, geographic location factors, etc.), and that involve the choice of several different answers, this can be especially time consuming as multi-section or multiple algorithms are executed to arrive at a final answer.
Similarly, any other processing that slows down the response time to DNS queries is also detrimental. For example, security processing, such as encrypting or digitally signing responses to DNS queries, is computation intensive and time consuming.
Accordingly, it is desirable to develop improved systems, methods and techniques for providing faster, more efficient, traffic management functionality for DNS query responses and for other processing associated with DNS query responses.